/*
 * 作者		www.TheWk.cn.vc
 * 开发环境	Windows7 64位 MyEclipse8.6 JDK1.6.0_45
 * 开发日期	2014年5月11日
 */
package common.base;

import java.io.Serializable;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

import common.tostringstyle.CustomToStringStyle;

/**
 * <hr/>
 * 
 * @author www.TheWk.cn.vc
 * @version 1.0 2014年5月11日
 */
public abstract class BaseSearch implements Serializable {

	private static final long     serialVersionUID = -1975407107689244083L;

	/**
	 * 排序类型_正序
	 */
	public static final String    Order_Type_Asc   = "asc";
	/**
	 * 排序类型_倒序
	 */
	public static final String    Order_Type_Desc  = "desc";
	/**
	 * 默认按倒序排序
	 */
	protected static final String Order_Default    = Order_Type_Desc;
	/**
	 * 默认排序字段orders
	 */
	protected static final String Sort_Default     = "id";

	/**
	 * 排序字段
	 */
	private String                sort             = Sort_Default;
	/**
	 * 排序类型
	 */
	private String                order            = Order_Default;

	/**
	 * 每页条数
	 */
	protected int                 rows             = Integer.MAX_VALUE;
	/**
	 * 当前页码
	 */
	protected int                 page             = 1;

	public String getSort() {
		return sort;
	}

	public void setSort(String sort) {
		this.sort = sort;
	}

	public String getOrder() {
		return order;
	}

	public void setOrder(String order) {
		this.order = order;
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.rows = rows;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	/**
	 * 从第几条开始读
	 */
	public int getOffset() {
		return (this.page - 1) * this.rows;
	}

	/**
	 * 读多少条
	 */
	public int getLimit() {
		return this.rows;
	}

	@Override
	public boolean equals(Object obj) {
		if (obj == null) {
			return false;
		}
		return EqualsBuilder.reflectionEquals(this, obj);
	}

	@Override
	public int hashCode() {
		return HashCodeBuilder.reflectionHashCode(this);
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this, CustomToStringStyle.Style);
	}
}
